package erwiki.ui.app.parts.navigation.handlers;

import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.jface.window.Window;

import erwiki.api.core.Engine;
import erwiki.api.exceptions.ProviderException;
import erwiki.api.pages.PageManager;
import erwiki.ui.app.parts.navigation.NavigationView;
import erwiki.ui.app.parts.navigation.dialogs.NewPageDialog;
import jakarta.inject.Inject;

public class AddNewPage {

	@Inject
	Engine engine;

	@Execute
	public void execute(EPartService partService) {
		NewPageDialog pageParamsDialog = new NewPageDialog(null);
		if (pageParamsDialog.open() == Window.OK) {
			// workaround - получить ID выбранной страницы.
			MPart part = partService.findPart(NavigationView.ID);
			NavigationView navigationView = (NavigationView) part.getObject();
			String selectedWikiPageId = navigationView.getSelectedWikiPage().getId();

			try {
				PageManager pageManager = engine.getManager(PageManager.class);
				String pageName = pageParamsDialog.getPageName();
				pageManager.createPage(pageName, selectedWikiPageId);
			} catch (ProviderException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	@CanExecute
	public boolean canExecute() {
		// TODO: проверка доступа.
		// Действие Pop-up меню для изменения данных доступно только пользователям соответствующей роли. */
		return true;
	}

}
